/**
 * Token管理工具
 * 用于管理用户登录状态、token存储和验证
 */

// Token存储键名
const TOKEN_KEY = 'token';
const USER_ID_KEY = 'userId';
const USER_EMAIL_KEY = 'userEmail';
const USER_AVATAR_KEY = 'touxiang';

/**
 * 保存用户登录信息
 * @param {Object} userData 用户数据对象
 * @param {string} userData.token 用户token
 * @param {string} userData.userId 用户ID
 * @param {string} userData.email 用户邮箱
 * @param {string} userData.headPic 用户头像
 */
export function saveUserData(userData) {
    try {
        if (userData.token) {
            localStorage.setItem(TOKEN_KEY, userData.token);
            console.log('Token已保存');
        }
        
        if (userData.userId) {
            localStorage.setItem(USER_ID_KEY, userData.userId);
        }
        
        if (userData.email) {
            localStorage.setItem(USER_EMAIL_KEY, userData.email);
        }
        
        if (userData.headPic) {
            localStorage.setItem(USER_AVATAR_KEY, userData.headPic);
        }
        
        console.log('用户数据保存成功');
        return true;
    } catch (error) {
        console.error('保存用户数据失败:', error);
        return false;
    }
}

/**
 * 获取用户token
 * @returns {string|null} 用户token或null
 */
export function getToken() {
    try {
        return localStorage.getItem(TOKEN_KEY);
    } catch (error) {
        console.error('获取token失败:', error);
        return null;
    }
}

/**
 * 获取用户ID
 * @returns {string|null} 用户ID或null
 */
export function getUserId() {
    try {
        return localStorage.getItem(USER_ID_KEY);
    } catch (error) {
        console.error('获取用户ID失败:', error);
        return null;
    }
}

/**
 * 获取用户邮箱
 * @returns {string|null} 用户邮箱或null
 */
export function getUserEmail() {
    try {
        return localStorage.getItem(USER_EMAIL_KEY);
    } catch (error) {
        console.error('获取用户邮箱失败:', error);
        return null;
    }
}

/**
 * 获取用户头像
 * @returns {string|null} 用户头像URL或null
 */
export function getUserAvatar() {
    try {
        return localStorage.getItem(USER_AVATAR_KEY);
    } catch (error) {
        console.error('获取用户头像失败:', error);
        return null;
    }
}

/**
 * 检查用户是否已登录
 * @returns {boolean} 是否已登录
 */
export function isLoggedIn() {
    const token = getToken();
    return !!token;
}

/**
 * 清除所有用户数据
 */
export function clearUserData() {
    try {
        localStorage.removeItem(TOKEN_KEY);
        localStorage.removeItem(USER_ID_KEY);
        localStorage.removeItem(USER_EMAIL_KEY);
        localStorage.removeItem(USER_AVATAR_KEY);
        console.log('用户数据已清除');
        return true;
    } catch (error) {
        console.error('清除用户数据失败:', error);
        return false;
    }
}

/**
 * 获取用户信息摘要
 * @returns {Object} 用户信息摘要
 */
export function getUserInfo() {
    return {
        isLoggedIn: isLoggedIn(),
        userId: getUserId(),
        email: getUserEmail(),
        avatar: getUserAvatar(),
        token: getToken()
    };
}

/**
 * 验证token是否有效（简单验证）
 * @returns {boolean} token是否有效
 */
export function isTokenValid() {
    const token = getToken();
    if (!token) return false;
    
    // 这里可以添加更复杂的token验证逻辑
    // 比如检查token格式、过期时间等
    
    return token.length > 10; // 简单长度验证
}

/**
 * 设置请求头中的token
 * @param {Object} axiosInstance axios实例
 */
export function setAuthHeader(axiosInstance) {
    const token = getToken();
    if (token && axiosInstance) {
        axiosInstance.defaults.headers.common['Authorization'] = `Bearer ${token}`;
        console.log('已设置请求头中的token');
    }
}

/**
 * 清除请求头中的token
 * @param {Object} axiosInstance axios实例
 */
export function clearAuthHeader(axiosInstance) {
    if (axiosInstance && axiosInstance.defaults.headers.common['Authorization']) {
        delete axiosInstance.defaults.headers.common['Authorization'];
        console.log('已清除请求头中的token');
    }
}










